package com.boco.fznq.webview;

import android.app.Activity;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.os.Process;
import android.text.TextUtils;
import android.view.View;
import android.webkit.CookieManager;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.AbsoluteLayout;
import android.widget.ProgressBar;

import com.boco.fznq.R;
import com.boco.fznq.view.TopbarView;
import com.culiu.core.utils.common.DeviceUtils;
import com.culiu.core.utils.file.FileUtils;

/**
 * Created by jiangcheng on 2016/12/13.
 */

public class MyWebviewActivity extends Activity {

    private WebView mWebview;

    private ProgressBar mProgressBar;

    private TopbarView topbarView;

    private String url;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_webview);
        mWebview = (WebView) findViewById(R.id.webview);
        mProgressBar = (ProgressBar) findViewById(R.id.progress_bar);
        topbarView = (TopbarView) findViewById(R.id.topbar_view);
        topbarView.setMiddleText("wap页");
        initWebview();
        topbarView.setLeftImgListener(new TopbarView.LeftImgListener() {
            @Override
            public void onClick(View view) {
                MyWebviewActivity.this.finish();
            }
        });

        mWebview.setWebChromeClient(new WebChromeClient());
        mWebview.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                return false;
            }

        });

        Bundle bundle = getIntent().getBundleExtra("bundle");
        if (bundle != null) {
            url = bundle.getString("url");
        }
        mWebview.loadUrl(url);
    }


    public class WebChromeClient extends android.webkit.WebChromeClient {
        @Override
        public void onProgressChanged(WebView view, int newProgress) {
            if (newProgress == 100) {
                mProgressBar.setVisibility(View.GONE);
            } else {
                if (mProgressBar.getVisibility() == View.GONE)
                    mProgressBar.setVisibility(View.VISIBLE);
                mProgressBar.setProgress(newProgress);
            }
            super.onProgressChanged(view, newProgress);
        }

        @Override
        public void onReceivedTitle(WebView view, String title) {
            super.onReceivedTitle(view, title);
            if (!TextUtils.isEmpty(title) && title.length() > 5) {
                title = title.substring(0, 5) + "...";
            }
            topbarView.setMiddleText(title);

        }
    }


    private void initWebview() {
        WebSettings settings = mWebview.getSettings();
        if (settings != null) {
            // 支持js
            settings.setJavaScriptEnabled(true);
            settings.setCacheMode(WebSettings.LOAD_DEFAULT);
            // 支持通过js打开新的窗口
            settings.setJavaScriptCanOpenWindowsAutomatically(true);
            // 设置可以访问文件
            settings.setAllowFileAccess(true);
            // setUseWideViewPort(true)+setLoadWithOverviewMode(true)设置加载进来的页面自适应手机屏幕
            // 无限缩放
//            settings.setUseWideViewPort(true);
            // 设置是否以概览模式中的WebView加载的网页，也就是缩小内容由宽度以适合屏幕。
//            settings.setLoadWithOverviewMode(true);
            // 设置的WebView是否应该保存表单数据。
            settings.setSaveFormData(true);
            settings.setSavePassword(true);
            // 设置页面默认缩放密度
            // 设置是否允许定位
            settings.setGeolocationEnabled(true);
            // 告诉web视图可以启用，禁用，或有需求时告诉web视图有插件，不建议使用
            settings.setPluginState(WebSettings.PluginState.ON);
            // 接收Cookie
            CookieManager.getInstance().setAcceptCookie(true);
            // 设置的WebView是否应该支持使用其屏幕上的变焦控制和手势缩放。
            settings.setSupportZoom(true);
            settings.setBuiltInZoomControls(true);


            // WebView是否是否支持多个窗口
            settings.setSupportMultipleWindows(true);
            // 垂直不显示滚动条
            mWebview.setVerticalScrollBarEnabled(false);
            // 是否支持长按
            mWebview.setLongClickable(true);
            // 页面不滚动是否隐藏Scrollbar
            mWebview.setScrollbarFadingEnabled(true);
            // Scrollbar样式
            mWebview.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
            // 获取Drawingcache通常会占用一定的内存,关闭
            // setDrawingCacheEnabled(true);

            /*** HTML5 API flags ***/
            // 设置H5应用数据缓存: 网页、图片等资源的缓存由webView自身控制；与应用数据缓存的概念不一样！
            // 因此，这里的开关不影响webView自身缓存；
            settings.setAppCacheEnabled(true);
            settings.setAppCachePath(FileUtils.getCacheDirectory(this)
                    .getAbsolutePath());

            // 启用获取数据库存储API
            settings.setDatabaseEnabled(true);
            settings.setDatabasePath(FileUtils.getFileDirectory(this)
                    .getAbsolutePath());
            // 设置启用DOM存储API。
            settings.setDomStorageEnabled(true);
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
            }
        }
    }


    public static void startMyWebView(Activity activity, String url) {
        if (url == null) {
            return;
        }
        Intent intent = new Intent(activity, MyWebviewActivity.class);
        Bundle bundle = new Bundle();
        bundle.putString("url", url);
        intent.putExtra("bundle", bundle);
        activity.startActivity(intent);
    }
}
